const loaderUtil = require("loader-utils")

function loader(source) { // buffer
    console.log("文件字节：",source.byteLength)
    // 获取配置参数
    const {limit=1000, filename="[contenthash:8].[ext]"} = loaderUtil.getOptions(this)
    let str = ''
    if(source.byteLength > limit){
        str = getFilePath.call(this, source, filename)
    }else{
        str = getBase64(source)
    }


    return `module.exports = '${str}' `
}
loader.raw = true // 该loader要处理的原始数据 source 给的值就是原始数据 不是字符串了

// 使用base64
function getBase64(buffer){
    return 'data:image/png;base64,'+buffer.toString("base64")
}

// 使用文件
function getFilePath(buffer, filename){
    // 按照某种规则 生成文件名
    // contenthash 根据具体文件生成的hash
    // const fname = loaderUtil.interpolateName(this, "[contenthash:8].[ext]",{content:buffer})
    const fname = loaderUtil.interpolateName(this, filename,{content:buffer})
    // 往最终的bounds里面加入文件
    this.emitFile(fname,buffer)

    return fname // 文件地址
}
module.exports = loader